Javascript - Currency Formatting in a text box

chris (2002-12-16 23:06:47)
3579 views
0 replies
try pasing everything below the dotted line - and save as currencytest.htm (or something sensible) - the load saved file into browser and tap numbers into the box - Rah!! Real-time client-side formatting. I think I have some customisable ascii filters lying around too so you can restrict it so only numbers can be typed..
<script language="javascript">

function cf(fld, e) {
	//hacked from something I found on the net one day
	//I have no idea who wrote the original, and do not
	//claim their fame !
	//chris lacy-hulbert,uk
	var comma=',';
	var point='.';
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if (whichCode == 13){ 
		return true;  // Enter
	}
	key = String.fromCharCode(whichCode);  // Get key value from key code
	if (strCheck.indexOf(key) == -1){
		return false;  // Not a valid key
	}
	len = fld.value.length;
	for(i = 0; i < len; i++){
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != point)){
			break;
		}
		aux = '';
	}
	for(; i < len; i++){
		if (strCheck.indexOf(fld.value.charAt(i))!=-1){
			aux += fld.value.charAt(i);
		}
	}
	aux += key;
	len = aux.length;
	if (len == 0){fld.value = '';}
	if (len == 1){fld.value = '0'+ point + '0' + aux;}
	if (len == 2){fld.value = '0'+ point + aux;}
	if (len > 2) {
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--) {
			if (j == 3) {
				aux2 += comma;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}
		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--){
			fld.value += aux2.charAt(i);
		}
		fld.value += point + aux.substr(len - 2, len);
	}
		return false;
}

</script>

$ <input type="text" onkeypress="cf(this,event)" />
comment